// #include "led_task.h"
#include "cbb_event.h"
#include "cbb_init.h"

#include "myboard.h"
#include "led.h"

#include "FreeRTOS.h"
#include "task.h"

void green_led_task(void* pvArgs){
    (void) pvArgs;
    led_toggle(pstLedGreen);
}

void blue_led_task(void* pvArgs){
    (void) pvArgs;
    led_toggle(pstLedBlue);
}

void led_task_run(void* pvArgs){
    (void) pvArgs;
    while(1){

        cbb_event_monitor(pstEventTimLed);

        // 任务延时切换
        vTaskDelay(pdMS_TO_TICKS(20));
    }
}

void led_task_init(void){

    static StaticTask_t stLedTaskTCB;
    static StackType_t  LedTaskStack[configMINIMAL_STACK_SIZE];
    static TaskHandle_t xLedTaskHandle;
    (void) xLedTaskHandle;

    // 创建 LED 任务
    xLedTaskHandle = xTaskCreateStatic(
        led_task_run,                   /* 任务函数 */
        "LedTask",                          /* 名字 */
        configMINIMAL_STACK_SIZE,      /* 栈深度（字） */
        NULL,                           /* 参数 */
        tskIDLE_PRIORITY + 2,               /* 优先级 */
        LedTaskStack,                   /* 静态栈数组 */
        &stLedTaskTCB);                 /* 静态 TCB 变量 */
    
    // 连接事件处理函数
    cbb_event_connect(pstEventBtnMode, green_led_task, NULL);
    cbb_event_connect(pstEventBtnUpgrade, blue_led_task, NULL);
    cbb_event_connect(pstEventTimLed,blue_led_task,NULL);
}
INIT_PORT_TASK(led_task_init);
